1   /*
2    * Copyright (C) 2008 The Guava Authors
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package com.google.common.collect;
18  
19  import static com.google.common.base.Preconditions.checkState;
20  
21  import com.google.common.annotations.GwtCompatible;
22  
23  /**
24   * Precondition checks useful in collection implementations.
25   */
26  @GwtCompatible
27  final class CollectPreconditions {
28  
29    static void checkEntryNotNull(Object key, Object value) {
30      if (key == null) {
31        throw new NullPointerException("null key in entry: null=" + value);
32      } else if (value == null) {
33        throw new NullPointerException("null value in entry: " + key + "=null");
34      }
35    }
36  
37    static int checkNonnegative(int value, String name) {
38      if (value < 0) {
39        throw new IllegalArgumentException(name + " cannot be negative but was: " + value);
40      }
41      return value;
42    }
43  
44    /**
45     * Precondition tester for {@code Iterator.remove()} that throws an exception with a consistent
46     * error message.
47     */
48    static void checkRemove(boolean canRemove) {
49      checkState(canRemove, "no calls to next() since the last call to remove()");
50    }
51  }